Spring IoC(Inversion of Control)

전통적인 프로그래밍에서는 개발자가 작성한 프로그램이 외부 라이브러리의 코드를 호출해서 이용함

-> 제어 역전은 이와 반대로 외부 라이브러리 코드가 개발자의 코드를 호출! 즉, 제어권이 프레임워크에게 있어 필요에 따라 스프링 프레임워크가 사용자의 코드를 호출하는 방식

스프링은 객체 지향 설계 원칙과 디자인 패턴의 핵심 원리를 담고 있는 IoC/DI를 프레임워크의 근간으로 삼는다
스프링이 직접 제공하는 모든 기술과 API, 컨테이너도 IoC/DI 방식으로 작성되어 있다